package util

import (
	"fmt"
	"os"
	"path/filepath"
	"runtime"
)

// 获取执行程序路径
func GetExecutablePath() (string, error) {
	p, err := filepath.Abs(os.Args[0])
	if err != nil {
		return "", err
	}

	// 在Windows cmd执行可能出现没有扩展名 .exe的情况
	if runtime.GOOS == "windows" && filepath.Ext(p) == "" {
		p += ".exe"
	}

	stat, err := os.Stat(p)
	if err != nil {
		return "", err
	}

	if stat.IsDir() {
		return "", fmt.Errorf("path %s is not a directory", p)
	}

	return p, nil
}

// 获取执行程序目录
func GetExecutableDirectory() (string, error) {
	dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
	if err != nil {
		return "", err
	}

	return dir, nil
	//将\替换成/
	//return strings.Replace(dir, "\\", "/", -1)
}
